package LeetCode;

//给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
//
//        最高位数字存放在数组的首位， 数组中每个元素只存储一个数字。
//
//        你可以假设除了整数 0 之外，这个整数不会以零开头。
//
//        示例 1:
//
//        输入: [1,2,3]
//        输出: [1,2,4]
//        解释: 输入数组表示数字 123。
//        示例 2:
//
//        输入: [4,3,2,1]
//        输出: [4,3,2,2]
//        解释: 输入数组表示数字 4321。

class Solution {
    public int[] plusOne(int[] arr) {
        int a = arr.length;
        while(a > 0){


            if(9 == arr[a-1]){
                arr[a-1] = 0;
            }else {
                arr[a-1] += 1;
                break;
            }
            a--;

        }
        //循环结束后如果首位为0，就说明需要扩大数组来进位 1
        if(0 == arr[0]){
            int[] i = new int[arr.length+1];
            for(int tmp = arr.length-1;tmp >= 0;tmp-- ){
                i[tmp+1] = arr[tmp];
            }
            i[0] = 1;
            return i;
        }
        return arr;
    }
}

